package com.ruoyi.system.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ruoyi.system.annotation.UserContext;
import com.ruoyi.system.domain.TbProductPackageAssociation;
import com.ruoyi.system.domain.vo.ProductQuantity;

import com.ruoyi.system.domain.vo.UserData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.TbProductPackageMapper;
import com.ruoyi.system.domain.TbProductPackage;
import com.ruoyi.system.service.ITbProductPackageService;

/**
 * 套餐管理Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-09-09
 */
@Service
public class TbProductPackageServiceImpl implements ITbProductPackageService 
{
    @Autowired
    private TbProductPackageMapper tbProductPackageMapper;

    /**
     * 查询套餐管理
     * 
     * @param packageId 套餐管理主键
     * @return 套餐管理
     */
    @Override
    public TbProductPackage selectTbProductPackageByPackageId(Long packageId)
    {
        UserData userData = UserContext.getUserData();

         String tableName = "tb_product_package" +  userData.getTableName();

        // 使用 userData
        try {
            return tbProductPackageMapper.selectTbProductPackageByPackageId(tableName,packageId);
        }finally {
        // 清理上下文，确保即使发生异常也能执行清理
        UserContext.clear();
    }
}

    /**
     * 查询套餐管理列表
     * 
     * @param tbProductPackage 套餐管理
     * @return 套餐管理
     */
    @Override
    public List<TbProductPackage> selectTbProductPackageList(TbProductPackage tbProductPackage)
    {

        UserData userData = UserContext.getUserData();

        tbProductPackage.setMerchantId((long) userData.getMerchantId());

        tbProductPackage.setStoreId((long) userData.getStoreId());

        tbProductPackage.setTableName("tb_product_package" + userData.getTableName());

        // 使用 userData
        try {
            return tbProductPackageMapper.selectTbProductPackageList(tbProductPackage);
        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }
    }

    /**
     * 新增套餐管理
     * 
     * @param tbProductPackage 套餐管理
     * @return 结果
     */
    @Override
    public int insertTbProductPackage(TbProductPackage tbProductPackage)
    {

        UserData userData = UserContext.getUserData();

        tbProductPackage.setMerchantId((long) userData.getMerchantId());

        tbProductPackage.setStoreId((long) userData.getStoreId());

        tbProductPackage.setTableName("tb_product_package" + userData.getTableName());

        // 使用 userData
        try {
            return tbProductPackageMapper.insertTbProductPackage(tbProductPackage);

        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }


    }
    /**
     * 修改套餐管理
     * 
     * @param tbProductPackage 套餐管理
     * @return 结果
     */
    @Override
    public int updateTbProductPackage(TbProductPackage tbProductPackage)
    {

        UserData userData = UserContext.getUserData();

//        tbProductPackage.setMerchantId((long) userData.getMerchantId());
//
//        tbProductPackage.setStoreId((long) userData.getStoreId());

        tbProductPackage.setTableName("tb_product_package" + userData.getTableName());


        // 使用 userData
        try {
            return tbProductPackageMapper.updateTbProductPackage(tbProductPackage);

        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }

    }

    /**
     * 批量删除套餐管理
     * 
     * @param packageIds 需要删除的套餐管理主键
     * @return 结果
     */
    @Override
    public int deleteTbProductPackageByPackageIds(Long[] packageIds)
    {
        UserData userData = UserContext.getUserData();

        String tableName = "tb_product_package" + userData.getTableName();

        // 使用 userData
        try {
            return tbProductPackageMapper.deleteTbProductPackageByPackageIds(tableName,packageIds);

        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }



    }

    /**
     * 删除套餐管理信息
     * 
     * @param packageId 套餐管理主键
     * @return 结果
     */
    @Override
    public int deleteTbProductPackageByPackageId(Long packageId)
    {
        UserData userData = UserContext.getUserData();

        String tableName = "tb_product_package" + userData.getTableName();

        // 使用 userData
        try {
            return tbProductPackageMapper.deleteTbProductPackageByPackageId(tableName,packageId);

        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }


    }

    //配置套餐商品
    @Override
    public int configureTbProductPackage(int packageId, List<ProductQuantity> productQuantities) {

        UserData userData = UserContext.getUserData();

//        String tableName = ("tb_product_package" + userData.getTableName());

       String tableName = "tb_product_package_association" + userData.getTableName();

        // 使用 userData
        try {
            //删除套餐id的数据
            tbProductPackageMapper.delPackageProduct(tableName,packageId);

            return tbProductPackageMapper.configureTbProductPackage(tableName,packageId,productQuantities);

        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }



    }

    //获取已配置商品
    @Override
    public List<TbProductPackageAssociation> selectAssociationList(int packageId) {

        UserData userData = UserContext.getUserData();

        String tableName = "tb_product_package_association" + userData.getTableName();

        // 使用 userData
        try {
            return tbProductPackageMapper.selectAssociationList(tableName,packageId);

        }finally {
            // 清理上下文，确保即使发生异常也能执行清理
            UserContext.clear();
        }




    }


}
